'''
给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的连续子数组的个数 。

 

示例 1：

输入：nums = [1,1,1], k = 2
输出：2
示例 2：

输入：nums = [1,2,3], k = 3
输出：2

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/subarray-sum-equals-k
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
'''
from typing import List


class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        counter = dict()
        pre, ans = 0, 0
        for num in nums:
            pre += num
            if pre == k:
                ans += 1
            ans += counter.get(pre - k, 0)
            counter[pre] = counter.get(pre, 0) + 1
        return ans
